#include "../db/memcached_db.h"

using namespace std;
/*
memcachede test
* log in/out    memcached(); memcached_free();
* update/insert memcached_set();
* get           memcached_get();
* get list      memcached_fetch();
                error offical with memcached_fetch example
                bug and deprecated since ver 0.50
*/
int main(int argc,const char *argv[]){
    cout<<"memcached test"<<endl;

    memcached_st *memc;
    memcached_return_t rc;
    time_t expiration=0;
    uint32_t flags=0;
    const char *config_s="--SERVER=127.0.0.1:22122";

    memc=memcached(config_s,strlen(config_s));
    if(memc!=NULL) cout<<"CONNECT SUCCESS"<<endl;

    string key="eat";
    string value="shitdickass";
    size_t v_len;

    rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
    assert(rc==MEMCACHED_SUCCESS);
    
    key="A",value="come";
    rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
    assert(rc==MEMCACHED_SUCCESS);

    key="B",value="go";
    rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
    assert(rc==MEMCACHED_SUCCESS);

    key="C",value="YES";
    rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
    assert(rc==MEMCACHED_SUCCESS);

    key="B";

    char* result=memcached_get(memc,key.c_str(),key.size(),&v_len,&flags,&rc);
    cout<<string(result,v_len)<<endl;

    memcached_delete(memc,key.c_str(),key.size(),(time_t)0);
    // vector<string> keylist={"eat","B","eat"};
    // vector<const char*> real_keys;
    // vector<size_t> key_len;
    
    // real_keys.reserve(keylist.size());
    // key_len.reserve(keylist.size());
    // for(auto tmp:keylist){
    //     cout<<"addtmp "<<tmp<<endl;
    //     real_keys.push_back(const_cast<char*>(tmp.c_str()));
    //     key_len.push_back(tmp.size());
    // }
    // rc=memcached_mget(memc,&real_keys[0],&key_len[0],keylist.size());
    // memcached_result_st rr;
    // memcached_fetch_result(memc,&rr,&rc);
    // cout<<"GETTRY: "<<memcached_result_take_value(&rr)<<endl;
    // memcached_fetch_result(memc,&rr,&rc);
    // cout<<"GETTRY: "<<memcached_result_take_value(&rr)<<endl;
    
    memcached_free(memc);
    return 0;
}
